package com.jt.controller;

import com.jt.pojo.User;
import com.jt.service.UserService;
import com.jt.vo.PageResult;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/hello")
    public List<User> hello(){

        return userService.findAll();
    }

    @PostMapping("login")
    public SysResult login(@RequestBody User user){
        String token = userService.login(user);
        if(token == null || token.length() == 0){
            return SysResult.fail();
        }
        return SysResult.success(token);
    }

    /**
     * 业务说明:实现用户列表的分页
     * 参数接受:pageResult
     * 返回值:SysResult对象(pageResult)
     */
    //@GetMapping("/list")
    //public SysResult getUserList(PageResult pageResult){
    //    pageResult = userService.getUserList(pageResult);
    //    return  SysResult.success(pageResult);
    //}

    /**
     * 利用MP查询数据库
     * 步骤:
     *      1.构建MP的分页对象
     *      2.根据分页对象查询数据
     *      3.从分页对象中获取数据
     *      4.封装pageResult对象
     *      5.编辑配置类,封装分页拦截器
     * @return
     */
    @GetMapping("/list")
    public SysResult getUserList(PageResult pageResult){
        pageResult = userService.getUserList(pageResult);
        return SysResult.success(pageResult);
    }
    /**
     * 业务说明:修改状态信息
     * url:/user/status/{id}/{status}
     * 参数:id/status
     * 返回值:SysResult
     */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){
        userService.updateStatus(user);
        return SysResult.success();
    }

    /**
     * 业务:实现用户新增
     * url:"/user/addUser
     * 参数:整个form表单
     * 返回值:SysResult
     */
    @PostMapping("/addUser")
    public SysResult addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.success();
    }

    /**
     * 业务:删除用户
     * url:"/user/{id}"
     * 参数:id
     * 返回值:SysResult
     */
    @DeleteMapping("/{id}")
    public SysResult deleteUser(@PathVariable Integer id){
        userService.deleteUser(id);
        return SysResult.success();
    }

    /**
     * 业务:根据id查询用户数据
     * url:"/",user.id
     * 参数:id
     * 返回值:SysResult
     */
    @GetMapping("/{id}")
    public SysResult getUser(@PathVariable Integer id){
        User user = userService.findUserById(id);
        return SysResult.success(user);
    }

    /**
     * 业务:根据用户ID更新数据
     * url:"/user/updateUser",user
     * 参数:user
     * 返回值:SysResult
     */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){
        userService.updateUser(user);
        return SysResult.success();
    }

}
